import torch
# 模型考试科目,考试题目,考试选项ABCD
answer_card = torch.randn(2,10,4)
# 需要批改的题目的位置(题目的索引)
# 第一个科目(语文) 需要批改的第2题和第3题(对应的索引位置为 1 和 2)
# 第二个科目(数学) 需要批改的第2题和第3题(对应的索引位置为 1 和 2)
mask_postions = torch.tensor([
    [1,2],  # 第一个科目(语文)需要批改的第2题和第3题
    [1,2]   # 第二个科目(数学)需要批改的第2题和第3题
])
# 打印答题卡的形状和需要批改的题目的位置,确定数据
print("答题卡的形状 -> ",answer_card.shape)
print("需要批改的题目的位置 -> ",mask_postions)
# 定义一个变量,用来存储所有需要批改的题目的全局索引
indices = []
# 遍历每一个科目以及需要批改的题目的位置
print("------")
for subject_idx,postions in enumerate(mask_postions):
    # subject_idx = > 科目的索引
    # postions => 当前科目下需要批改题目的位置(索引)
    for question_idx in postions:
        # 计算每一道题目在整个答题卡(语文+数学)上面的全局索引
        # subject_idx => 科目索引
        # question_idx => 题目在科目当中的位置索引
        # 全局索引的公式 => 科目索引 * 每一个科目的题目数量 + 题目的索引
        index = subject_idx * answer_card.size(1) + question_idx
        # print(index)
        indices.append(index)
# print("需要批改的题目的具体的位置(全局索引当中的位置)",indices)
for index in indices:
    print(index)








